#include <bits/stdc++.h>
using namespace std;
const int N = 510, M = 1e5 + 7;
int n, m;
int e[N], ne[M], h[N], w[M], idx;
int dist[N];
bool vis[N];
const int INF = 0x3f3f3f3f;
int g[N][N];

int prim() {
  memset(dist, 0x3f, sizeof dist);
  int res = 0;
  for (int i = 0; i < n; ++i) {
    int t = -1;
    for (int j = 1; j <= n; ++j)
      if (!vis[j] && (t == -1 || dist[t] > dist[j])) t = j;

    if (i && dist[t] == INF) return INF;
    if (i) res += dist[t];
    vis[t] = true;

    for (int k = 1; k <= n; ++k) dist[k] = min(dist[k], g[t][k]);
  }
  return res;
}

int main() {
  cin >> n >> m;
  memset(g, 0x3f, sizeof g);

  while (m--) {
    int a, b, c;
    cin >> a >> b >> c;
    g[a][b] = g[b][a] = min(g[a][b], c);
  }

  int t = prim();
  if (t >= INF / 2)
    cout << "impossible\n";
  else
    cout << t;
  return 0;
}
